#include "keyboard/keyboard.h"
#include "touch_init.h"
#include "appdata/app_data.h"
#include "keyboard/Task_events.h"
TOUCH_ID fpm(&Serial1);

int ENROLLID_1 = 1; // 在此位置注册指纹
int flag_enroll = 255;

void touch_id_init(void *pvParameters)
{
      Serial1.begin(57600, SERIAL_8N1, RXD1, TXD1);
      pinMode(TOUCH_ID_INT, INPUT);
      bool touch_connect_success = 1;
      uint8_t touch_connect = 0;
      // 初始化指纹模块
      Serial.println("#################   touch_id_init.cpp:   #################");
      while (fpm.getChipSN() == "")
      {
            Serial.println("waiting......");
            delay(200); // 等待指纹识别模块初始化完成
            touch_connect++;
            if (touch_connect > 10)
            {
                  touch_connect_success = 0;
                  break;
            }
      }
      if (touch_connect_success == 1)
      {
            Serial.print("Module type:");
            Serial.println(fpm.getChipSN());
            Serial.print("Number of registered fingerprints:");
            Serial.println(fpm.inquiry()); // 查询当前已注册指纹数量，最大容量50枚
      }
      else
      {
            Serial.println("The touch_id_init error");
      }
      while (1)
      {
            if (digitalRead(TOUCH_ID_INT) == HIGH)
            {
                  int id = fpm.identify(1); // 验证指纹并获取指纹ID，参数true 在无手指状态是否有LED灯提示，您可以false关掉指示灯
                  if (id == 1)
                  {
                        xTaskCreatePinnedToCore(computer,        // 函数指针，任务函数
                                                "computer_open", // 开机  ，任务名字
                                                1024 * 4,        // 栈大小
                                                (void *)&id,     // 获取地址传递参数
                                                20,              // 任务优先级, with 3 (configMAX_PRIORITIES - 1) 是最高的，0是最低的.
                                                NULL,            // 任务句柄
                                                0);
                  }
                  else if (id <= 50)
                  {
                        /* code */
                  }
            }

            // // put your main code here, to run repeatedly:
            // if (flag_enroll == 255)
            // {
            //      Serial.print("注册指纹，在ID:");
            //       Serial.print(ENROLLID_1);
            //       Serial.println("位置");
            //       Serial.println("当前有10秒钟的时间，将需要注册的手指按压在模块上4次！");
            //       flag_enroll = fpm.enroll(ENROLLID_1);
            //       // flag_enroll = fpm.enroll(ENROLLID_1, 6); // 或者添加第二个参数，6（范围1~12） 拼接6次
            // }
            // else if (flag_enroll == 01)
            // {
            //       Serial.println("该ID已注册指纹，请更换ID再注册！");
            // }
            // else if (flag_enroll == 00)
            // {
            //       Serial.print("注册ID ");
            //       Serial.print(ENROLLID_1);
            //       Serial.println("，成功！");
            //       flag_enroll = 02; // 需要注册，请重新进入
            // }
            // delay(200);
            vTaskDelay(1000);
      }
}
